import { AddressApi, setAddressApi } from '@zl-crud/components/address/src/AddressApi'

/**
 * 模拟地址API实现，用于测试
 */
export class MockAddressApi implements AddressApi {
  // 模拟省份数据
  private provinces = [
    { label: '北京市', value: '北京市' },
    { label: '河北省', value: '河北省' },
    { label: '广东省', value: '广东省' },
  ]

  // 模拟城市数据
  private cities: Record<string, any[]> = {
    北京市: [{ label: '北京市', value: '北京市' }],
    河北省: [
      { label: '石家庄市', value: '石家庄市' },
      { label: '唐山市', value: '唐山市' },
    ],
    广东省: [
      { label: '广州市', value: '广州市' },
      { label: '深圳市', value: '深圳市' },
    ],
  }

  // 模拟区域数据
  private areas: Record<string, any[]> = {
    北京市: [
      { label: '东城区', value: '东城区' },
      { label: '西城区', value: '西城区' },
      { label: '朝阳区', value: '朝阳区' },
    ],
    石家庄市: [
      { label: '长安区', value: '长安区' },
      { label: '桥西区', value: '桥西区' },
    ],
    广州市: [
      { label: '天河区', value: '天河区' },
      { label: '越秀区', value: '越秀区' },
    ],
  }

  /**
   * 获取省份
   */
  getProvince(): Promise<any> {
    return Promise.resolve({
      data: this.provinces,
    })
  }

  /**
   * 获取城市
   * @param code 省份代码
   */
  getCity(code: any): Promise<any> {
    return Promise.resolve({
      data: this.cities[code] || [],
    })
  }

  /**
   * 获取区域
   * @param code 城市代码
   */
  getArea(code: any): Promise<any> {
    return Promise.resolve({
      data: this.areas[code] || [],
    })
  }
}

setAddressApi(new MockAddressApi())
